package com.ruoyi.hxf.mapper;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.hxf.domain.Type;
import com.ruoyi.hxf.domain.vo.TypeVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 班级创建管理Mapper接口
 *
 * @author hxf
 * @date 2022-12-15
 */
public interface TypeMapper extends BaseMapperPlus<TypeMapper, Type, TypeVo> {

    /**
     * 根据班级的id查询班级的全部老师id拼接的
     *
     * @param classId 班级id
     * @return
     */
    String selectTeacherIdCount(@Param("classId") Long classId);

    /**
     * 删除班级的全部老师
     *
     * @param classId 班级id
     */
    void deleteClassTeacher(@Param("classId") Long classId);

    /**
     * 修改班级的老师
     *
     * @param classTeacher id拼接的老师id
     * @param classId      班级的id
     */
    void insertClassTeacher(@Param("classTeacher") String classTeacher, @Param("classId") Long classId);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第一节课
     * @return
     */
    Long selectCourseTeacherOneDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第二节课
     * @return
     */
    Long selectCourseTeacherTwoDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第三节课
     * @return
     */
    Long selectCourseTeacherThreeDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第四节课
     * @return
     */
    Long selectCourseTeacherFourDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第五节课
     * @return
     */
    Long selectCourseTeacherFiveDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 根据老师名字课程名称和星期几的id查询班级id
     *
     * @param userName    老师名字
     * @param oldRoleName 课程名称
     * @param id          星期几
     *                    第六节课
     * @return
     */
    Long selectCourseTeacherSixDeptId(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    String selectClassLeaderName(@Param("classLeaderId") String classLeaderId);

    int updateByType(Type type);

    Long selectTypeByDeptId(@Param("classId") Long classId);

    void updateUserRole(@Param("oldClassLeader") Long oldClassLeader, @Param("s") String s);

    String selectRoleName();

    void insertUserRole(@Param("oldClassLeader") Long oldClassLeader, @Param("s") String s);


    Boolean selectExistMasterId(@Param("classId") Long classId, @Param("oldClassLeader") Long oldClassLeader);


    String selectFromClass(@Param("userId") Long userId);

    String selectPasswordByDeptId(@Param("classId") Long classId);

    /**
     * 根据班级Id插入家长Id
     *
     * @param classId 班级Id
     * @return
     */
    String selectClassParentByDeptId(@Param("classId") Long classId);

    void updateClassParent(@Param("classParent") String classParent, @Param("classId") Long classId);

    /**
     * 修改班级密码
     * @param classId
     * @param classPassword
     * @return
     */
    int updateClassPassword(@Param("classId")String classId, @Param("classPassword") String classPassword);

    /**
     * 根据父亲id查询子部门id
     * @param parentId
     * @return
     */
    List<Type> selectParentIdByDeptId(@Param("parentId")Long parentId);

    Type selectByDeptId(@Param("deptId")Long deptId);
}
